@@ -625,6 +625,51 @@ def statistic_consumer(request): |
||
| 625 | 625 |
'province_logs': province_logs, |
| 626 | 626 |
}) |
| 627 | 627 |
|
| 628 |
+def statistic_member(request): |
|
| 629 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
|
| 630 |
+ admin_id = request.POST.get('admin_id', '')
|
|
| 631 |
+ start_time = request.POST.get('start_time', '')
|
|
| 632 |
+ end_time = request.POST.get('end_time', '')
|
|
| 633 |
+ |
|
| 634 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
| 635 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
| 636 |
+ |
|
| 637 |
+ try: |
|
| 638 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
| 639 |
+ except AdministratorInfo.DoesNotExist: |
|
| 640 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
| 641 |
+ |
|
| 642 |
+ # 消费者统计 |
|
| 643 |
+ users = ConsumeInfoSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, test_user=False, dupload=False, status=True).values('user_id').distinct()
|
|
| 644 |
+ |
|
| 645 |
+ userinfos = UserInfo.objects.none() |
|
| 646 |
+ |
|
| 647 |
+ for user in users: |
|
| 648 |
+ userinfos |= UserInfo.objects.filter(user_id=user.get('user_id', ''))
|
|
| 649 |
+ |
|
| 650 |
+ # 会员级别 |
|
| 651 |
+ level_logs = list(userinfos.values('level').annotate(num=Count('user_id')))
|
|
| 652 |
+ |
|
| 653 |
+ # 会员积分 |
|
| 654 |
+ integral_logs = list(userinfos.values('integral').annotate(num=Count('user_id')))
|
|
| 655 |
+ |
|
| 656 |
+ # 镜头数 |
|
| 657 |
+ shot_logs = list(userinfos.values('shots_num').annotate(num=Count('user_id')))
|
|
| 658 |
+ |
|
| 659 |
+ # 性别 |
|
| 660 |
+ sex_logs = list(userinfos.values('sex').annotate(num=Count('user_id')))
|
|
| 661 |
+ |
|
| 662 |
+ # 省份 |
|
| 663 |
+ province_logs = list(userinfos.values('province_name').annotate(num=Count('user_id')).order_by('-num'))
|
|
| 664 |
+ |
|
| 665 |
+ return response(200, 'Get Consumer Statistic Success', u'获取消费者统计成功', data={
|
|
| 666 |
+ 'level_logs': level_logs, |
|
| 667 |
+ 'integral_logs': integral_logs, |
|
| 668 |
+ 'shot_logs': shot_logs, |
|
| 669 |
+ 'sex_logs': sex_logs, |
|
| 670 |
+ 'province_logs': province_logs, |
|
| 671 |
+ }) |
|
| 672 |
+ |
|
| 628 | 673 |
def record_consumer(request): |
| 629 | 674 |
brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
|
| 630 | 675 |
page = request.POST.get('page', 1)
|
@@ -314,6 +314,7 @@ urlpatterns += [ |
||
| 314 | 314 |
|
| 315 | 315 |
url(r'^admin/dashboard$', admin_views.dashboard, name='dashboard'), |
| 316 | 316 |
url(r'^admin/statistic/consumer$', admin_views.statistic_consumer, name='statistic_consumer'), |
| 317 |
+ url(r'^admin/statistic/member$', admin_views.statistic_member, name='statistic_member'), |
|
| 317 | 318 |
|
| 318 | 319 |
url(r'^admin/record/consumer$', admin_views.record_consumer, name='record_consumer'), |
| 319 | 320 |
url(r'^admin/record/sale$', admin_views.record_sale, name='record_sale'), |